<%
require 'dbi'
require 'cgi'
require 'src/pacote'
require "src/status"
require "src/verbose"

begin
  cgi = CGI.new
  a_params = cgi.params
  $id_pacote = a_params["id_pacote"][0]

  $pacote = Pacote.new("nil")
  $pacote.id_pacote = $id_pacote
  $pacote.select

rescue Exception %>
  <html>
    <head>
      <title>Redirecionando...</title>
      <meta http-equiv="Refresh" content="5;url=error.rhtml"/>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    </head>
    <body>
      <p>
        Redirecionando... <a href="error.rhtml">ou clique aqui</a>.
      </p>
    </body>
  </html> <%
  msg = "Erro"
  Verbose.to_log msg
  raise
end # => begin - rescue


def get_form a_params
  begin
    # Testa se algum campo é nulo
    a_params.each do |i|
      if i == nil
        msg = "Algum parâmetro é nulo. Por favor, preencha todos os campos."
        Verbose.to_log msg
        return msg
      end
    end

    $pacote.senha = a_params["senha"][0] unless a_params["senha"][0] == ""
    $pacote.descricao = a_params["descricao"][0] unless a_params["descricao"][0] == ""
    $pacote.url_fonte = a_params["url_fonte"][0] unless a_params["url_fonte"][0] == ""
    $pacote.legenda = a_params["legenda"][0] unless a_params["legenda"][0] == ""
    case a_params["mostrar"][0]
    when "true": $pacote.mostrar = true
    when "false": $pacote.mostrar = false
    end
    $pacote.update_db
    msg = "Pacote modificado com sucesso."
    Verbose.to_log msg
    return msg
  rescue Exception => e
    Verbose.to_log e
    return e
  end
end

def live_test_links
  begin
    if $pacote == nil
      msg = "Não foi possível obter o pacote para teste."
      Verbose.to_log msg
      return msg
    end
    links_before_test = $pacote.select_links
    links_before_test.each do |link|
      if link.id_status == Status::BAIXADO
        $pacote.tamanho += link.tamanho
      else
        link.tentativas = 0
        link.test
        $pacote.tamanho += link.tamanho if link.id_status == Status::ONLINE
      end
    end
    $pacote.problema = true if $pacote.tamanho == 0
    $pacote.update_db
    return "Pacote testado com sucesso."
  rescue Exception => e
    msg = "Ocorreu um erro no teste do pacote. #{e}"
    Verbose.to_log msg
    return msg
  end
end

def action_pacote a_params
  begin
    if a_params["action"][0] == "cancelar"
      sql = "UPDATE rs.pacote SET mostrar = 'false', problema = 'true' WHERE id = ? "
      Banco.instance.db_connect.do(sql, $id_pacote)
      msg = "ACTION = Cancelar => Pacote modificado com sucesso."
    elsif a_params["action"][0] == "reiniciar"
      # UPDATE link
      sql = "UPDATE rs.link SET testado = 'false', id_status = 5, "
      sql += "data_inicio = ?, data_fim = NULL WHERE id_pacote = ? "
      Banco.instance.db_connect.do(sql, StrTime.now, $id_pacote)
      # UPDATE pacote
      sql = "UPDATE rs.pacote SET "
      sql += "mostrar = 'true', problema = 'false', "
      sql += "completado = 'false', data_inicio = ?, data_fim = NULL "
      sql += "WHERE id = ? "
      Banco.instance.db_connect.do(sql, StrTime.now, $id_pacote)
      lista_links = $pacote.select_links
      if lista_links
        lista_links.each do |link|
          link.data_inicio = StrTime.now
          link.data_fim = nil
          link.id_status = Status::AGUARDANDO
          link.tamanho = nil
          link.testado = false
          link.filename = nil
          link.completado = false
          link.update_db
        end
        msg = "ACTION = Reiniciar => Pacote modificado com sucesso."
      else
        msg = "ACTION = Reiniciar => <b>Não foi possível obter os links.</b>"
      end
    elsif a_params["action"][0] == "retestarNow"
      txt = live_test_links
      msg = "ACTION = Retestar agora => #{txt}"
    elsif a_params["action"][0] == "retestar"
      # UPDATE link
      sql = "UPDATE rs.link SET testado = 'false', id_status = 5 "
      sql += "WHERE id_pacote = ? AND l.completado = 'false' "
      Banco.instance.db_connect.do(sql, $id_pacote)
      # UPDATE pacote
      sql = "UPDATE rs.pacote SET problema = 'false' "
      sql += "WHERE id = ? "
      Banco.instance.db_connect.do(sql, $id_pacote)
      msg = "ACTION = Retestar => Pacote modificado com sucesso."
    else
      msg = "NO ACTION."
    end
    Verbose.to_log msg
    return msg
  rescue Exception => e
    Verbose.to_log "Erro: #{e}<br\/>#{e.backtrace.join("<br\/>")}"
    nil
  end
end
%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--
Design by Free CSS Templates
http://www.freecsstemplates.org
Released for free under a Creative Commons Attribution 2.5 License

Name       : Professional
Description: A two-column, fixed-width design with dark color scheme background.
Version    : 1.0
Released   : 20081230

-->

<html>
  <head>
    <link rel="icon" href="images/favicon.png" type="image/x-icon" />
    <link rel="shortcut icon" href="images/favicon.png" type="image/x-icon" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="Refresh" content="3;url=lista_links.rhtml?id_pacote=<%= $id_pacote %> "/>
    <title>RS-Online ~ version 1.0b ~ Powered by eRuby</title>
    <link rel="stylesheet" type="text/css" href="style.css" media="screen" />
  </head>
  <body>

    <div id="wrapper">

      <div id="header">
        <div id="logo">
          <h1><a href="#">RS-Online Beta</a></h1>
          <p>version 1.0b ~ Powered by eRuby</p>
        </div>
        <!-- end #logo -->
        <div id="menu">
          <ul>
            <li class="active"><a href="index.rhtml">Home</a></li>
            <li><a href="#">About Us</a></li>
            <li><a href="#">Products</a></li>
            <li><a href="#">Services</a></li>
            <li><a href="#">Contact Us</a></li>
          </ul>
        </div>
        <!-- end #menu -->
      </div>
      <!-- end #header -->
      <div id="page">
        <!--<div id="header-pic"></div>-->
        <div id="content">
          <div class="post">
            <h1 class="title">Alterações no pacote</h1>
            <div class="entry">
              <p> <%= get_form a_params %> </p>
              <p> <%
                puts action_pacote a_params unless a_params["acao"][0] == "" %>
              </p>
              <p>Redirecionando para lista de links em 3 segundos...</p>
            </div>
            <div class="meta">
              <p class="links">RS-Online is powered by eRuby.</p>
            </div>
          </div>
        </div>
        <!-- end #content -->
        <div id="sidebar">
          <div id="sidebar-bgtop"></div>
          <div id="sidebar-content">
            <div id="sidebar-bgbtm">
              <ul>
                <li id="search">
                  <h2>Search</h2>
                  <form method="get" action="">
                    <fieldset>
                      <input type="text" id="s" name="s" value="" />
                      <input type="submit" id="x" value="Search" />
                    </fieldset>
                  </form>
                </li>
                <li>
                  <h2>Pacotes</h2>
                  <ul>
                    <li><a href="add_pacote.rhtml"><img alt="new" src="images/package_add.png"/>&nbsp;Novo Pacote</a></li>
                    <li><a href="lista_pacotes.rhtml"><img alt="lst" src="images/drive_web.png"/>&nbsp;Lista de Pacotes</a></li>
                    <li><a href="lista_pacotes_ocultos.rhtml"><img alt="oct" src="images/safe.png"/>&nbsp;Lista de Pacotes Ocultos</a></li>
                  </ul>
                </li>
                <li>
                  <h2>Downloads</h2>
                  <ul>
                    <li><a href="#"><img alt="est" src="images/chart_bar.png"/>&nbsp;Estatística (em construção)</a></li>
                    <li><a href="log_downloads.rhtml"><img alt="log" src="images/report.png"/>&nbsp;Log de Downloads</a></li>
                  </ul>
                </li>
              </ul>
            </div>
          </div>
        </div>
        <!-- end #sidebar -->
        <div style="clear:both; margin:0;"></div>
      </div>
      <!-- end #page -->

    </div>

    <div id="footer">
      <p>&copy; 2010. All Rights Reserved. Design by Nightcrawler. RS-Online is powered by eRuby.</p>
    </div>
    <!-- end #footer -->
  </body>
</html>
